﻿
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;

using Intelsi.BusinessLogic;
using Intelsi.Entity;
using Microsoft.Practices.Unity;

namespace Intelsi.WB
{
    public partial class FrmTrabajador : System.Web.UI.Page
    {
        [Dependency]
        public ITrabajadorBL trabajadorBL { get; set; }


        public Trabajador CurrenTrabajador { get; set; }



        protected void Page_Load(object sender, EventArgs e)
        {
            string userName = HttpContext.Current.User.Identity.Name;
            var trabajador1 = trabajadorBL.GetFromTrabajadorByCorreoCorporativo(userName);

            string cargo = trabajador1.Cargo;


            if (!Page.IsPostBack)
            {
                var acc = Request.QueryString["acc"];
                var idtra = Request.QueryString["IdTrabajador"];

                if (acc == "nuevo" && (cargo == "Administrador" || cargo == "Gerente"))
                {
                    
                    AccionHiddenField.Value = acc;
                    IdHiddenField.Value = "0";

                    var roles = Roles.GetAllRoles();
                    DowCargo.DataSource = roles;
                    DowCargo.DataBind();


                    var rol1 = DowCargo.SelectedValue.ToString();

                    if (rol1 == "Trabajador")
                    {
                        txtcontraseña.Visible = false;
                        txtcontraseña1.Visible = false;
                        txtcorporativo.Visible = false;

                    }
                    else 
                    {
                        txtcontraseña.Visible = true;
                        txtcontraseña1.Visible = true;
                        txtcorporativo.Visible = true;
                    }


                }

                else if (acc == "editar" && (cargo == "Administrador" || cargo == "Gerente"))
                {

                    AccionHiddenField.Value = acc;

                    var roles = Roles.GetAllRoles();
                    DowCargo.DataSource = roles;
                    DowCargo.DataBind();



                    Trabajador trabajador;

                    trabajador = trabajadorBL.GetFromTrabajadorById(Int32.Parse(idtra.ToString()));


                    CurrenTrabajador = trabajador;

                    IdHiddenField.Value = trabajador.IdTrabajador.ToString();
                    txtNombres.Text = trabajador.Ape_Nomb;
                    txtdni.Text = trabajador.DNI;
                    txtdireccion.Text = trabajador.Direccion;
                    txtfijo.Text = trabajador.TelFijo;
                    txtcelular.Text = trabajador.Celular;
                    txt1privado.Text = trabajador.emailPriv;
                    txtcorporativo.Text = trabajador.emailCorp;
                    txtcontraseña.Text = trabajador.Contraseña;
                    txtcontraseña1.Text = trabajador.Contraseña;
                    DowCargo.SelectedValue = trabajador.Cargo;

                    var estado = trabajador.Estado;

                    if (estado == true)
                    {
                        boxestado.Text = "Activo";
                    }
                    else
                    {
                        boxestado.Text = "Inactivo";
                    }

                    txtfecha.Text = trabajador.FechaIngreso.Value.ToShortDateString();
                    txtfotocheck.Text = trabajador.NumFotocheck;

                    foto.ImageUrl = "getFoto.aspx?size=280&id=" + idtra;

                    this.DataBind();
                }

                else
                {
                    Page.ClientScript.RegisterStartupScript(this.GetType(),
                                    "mensaje",
                                       "<script type=\"text/javascript\">" +
                                          "alert(\"Usted No tiene Los Permiso Nesesarios Para esto\");" +
                                          "document.location=('DefaultAdministracion.aspx');" +
                                            "</script>", false);
                }

            }


        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            Trabajador trabajador = BindData();

            if (AccionHiddenField.Value == "editar")
            {
                                   
                trabajadorBL.Actualizartrabajador(trabajador);

            }
            else if (AccionHiddenField.Value == "nuevo")
            {
                string usu = txtcorporativo.Text;
                string pas = txtcontraseña.Text;
                string email = txt1privado.Text;

                MembershipCreateStatus createStatus;
                Membership.CreateUser(usu, pas, email, null, null, true, null, out createStatus);

                if (createStatus == MembershipCreateStatus.Success)
                {
                    for (int i = 0; i < DowCargo.Items.Count; i++)
                    {
                        if (DowCargo.Items[i].Selected == true)
                        {
                            Roles.AddUserToRole(txtcorporativo.Text, DowCargo.Items[i].ToString());


                        }
                    }
                }


                trabajadorBL.AddTrabajador(trabajador);
                Response.Redirect("FrmTrabajador.aspx?acc=editar&IdTrabajador=" + trabajador.IdTrabajador.ToString());



            }
        }

        private Trabajador BindData()
        {

            Trabajador trabajador = new Trabajador()
            {
                IdTrabajador = Int32.Parse(IdHiddenField.Value),
                Ape_Nomb = txtNombres.Text,
                Cargo = DowCargo.SelectedValue,
                DNI = txtdni.Text,
                Direccion = txtdireccion.Text,
                TelFijo = txtfijo.Text,
                Celular = txtcelular.Text,
                emailCorp = txtcorporativo.Text,
                emailPriv = txt1privado.Text,
                Contraseña = txtcontraseña.Text,
                Estado = boxestado.Checked,
                FechaIngreso = DateTime.Parse(txtfecha.Text),
                NumFotocheck = txtfotocheck.Text

            };

            if (fuFoto.HasFile)
            {
                trabajador.Foto = fuFoto.FileBytes;
            }
            return trabajador;
        }

        protected void Cancelar(object sender, EventArgs e)
        {
            Response.Redirect("FrmListTrabajador.aspx");
        }
    }
}